﻿$(function(){//延迟加载
	var gpId='';
	var ugfunctype=null;
	var ugfunc=null;
	var nodesbefore=null;
	var nodesminbefore=null;
	var nodesafter=null;
	var nodesminafter=null;
	
	var nodesfuncbefore=null;
	var nodesfuncafter=null;
	
	$('#functypetree').tree({
//		url:'getrootfunctype',
		url:'getallfunct',
		checkbox:true,
		onClick:function(node){
			var functypeId='';
			functypeId=node.id;
//			$('#funclist').datagrid('reload',{
//				functypeId:functypeId,
//				ugId:''
//			});
			loadfunclist(functypeId,gpId);
//			functypename=node.text;
//			functypesort=node.functypesort;
		},
		onLoadSuccess:function(){
			
		}
	});
	
	$('#updateugfunctype').linkbutton({
		iconCls:'icon-ok',
		text:'确认分组功能类别',
		plain:true,
		onClick:function(){
			var deletenodes='';
			var newnodes='';
			nodesafter=$('#functypetree').tree('getChecked', ['checked','indeterminate']);
//			alert(nodesbefore.length);
//			alert(nodesafter.length);
			for(var i=0;i<nodesbefore.length;i++){
				var nb=nodesbefore[i];
				var flag=0;
//				alert(nodesafter[nodesafter.length-1].text);
				for(var j=0;j<nodesafter.length;j++){
					var na=nodesafter[j];
					if(na==undefined){
						alert(j);
						return
					}					
					if(na.id==nb.id){
						flag=1;
						break;
					}
				}
				if(flag==0){//即将删除
					deletenodes=deletenodes+nb.id+',';
				}
			}
			if(deletenodes!='')
				deletenodes=deletenodes.substring(0,deletenodes.length-1);
			for(var i=0;i<nodesafter.length;i++){
				var na=nodesafter[i];
				var flag=0;
				for(var j=0;j<nodesbefore.length;j++){
					var nb=nodesbefore[j];
					if(nb.id==na.id){
						flag=1;
						break;
					}
				}
				if(flag==0){//即将新增
					newnodes=newnodes+na.id+',';
				}
			}
			if(newnodes!=''){
				newnodes=newnodes.substring(0,newnodes.length-1);
			}
//			alert(deletenodes);
			if(newnodes!=''||deletenodes!=''){
				$.ajax({
					url:'editfunctypetogroup',
					type:'POST',
					data:{
						gpId:gpId,
						newnodes:newnodes,
						deletenodes:deletenodes
					},
					success:function(data){
						alert(data.msg);
						$.ajax({
							url:'getugfunctypebygpId?gpId='+gpId,
							success:function(data){
								reloadugtree(data);
							}
						});						
					}					
				});
			}
		}
	});
	$('#grouplist').datagrid({
		url:'queryallgroup',
		columns:[[{
			field:'gpname',
			title:'分组名称',
			width:'40%',
			align:'center',
			styler: function () {
	            return 'background-color:#4CCBDE;color:white;font-weight:bold';
	         }				
		},{
			field:'gpdescribe',
			title:'职责描述',
			width:'55%',
		}]],
		fit:true,
		striped:true,
		nowrap:true,
		pagination:true,
		rownumbers:true,
		autoRowHeight:false,
		singleSelect:true,
		onClickRow:function(index, row){
			gpId=row.gpId;
			$.ajax({
				url:'getugfunctypebygpId?gpId='+gpId,
				success:function(data){					
					reloadugtree(data);
				}
			});
			loadfunclist('',gpId);
		}
	});
	
	function reloadugtree(data){//重选
		var rootnode=$('#functypetree').tree('find','root');
		$('#functypetree').tree('uncheck',rootnode.target);
		var nodes=$('#functypetree').tree('getChildren');
		for(var i=0;i<nodes.length;i++){
			for(var j=0;j<data.length;j++){
				if(data[j].functypesort=='0'){
					continue;
				}
				if(data[j].functypeId== nodes[i].id){
					var node = $('#functypetree').tree('find',nodes[i].id);
					$('#functypetree').tree('check', node.target);
//					alert(nodes[i].text);
					break;
				}
			}
		}
		nodesbefore=$('#functypetree').tree('getChecked', ['checked','indeterminate']);
//		nodesbefore=$('#functypetree').tree('getChecked');
		nodesminbefore = $('#functypetree').tree('getChecked','indeterminate');
	}
	
	function recheckfunclist(data){
		$('#funclist').datagrid('uncheckAll');
		var ufrows=$('#funclist').datagrid('getRows');
		for(var i=0;i<ufrows.length;i++){
			for(var j=0;j<data.length;j++){
				if(ufrows[i].funcId==data[j].funcId){
					$('#funclist').datagrid('checkRow',i);
					break;
				}
			}
		}
		nodesfuncbefore=$('#funclist').datagrid('getChecked');
	}
	
	
	function loadfunclist(functypeId,gpId){
		$('#funclist').datagrid({
			url:'getfunclist',
			queryParams:{
				functypeId:functypeId,
				ugId:gpId
			},
			columns:[[{
				field:'ck',
				checkbox:true
			},{
				field:'funcname',
				title:'功能名称',
				width:'15%',
				editor:{
		        	  type:'textbox',
		        		 options:{		        			 
		        			 required:true
		        		 }
		          }
			},{
				field:'funcsort',
				title:"操作类型",
				width:'20%',
				editor:{
		        	  type:'textbox',
		        		 options:{		        			 
		        			 required:true 
		        		 }
		          }
			},{
				field:'functypename',
				title:"功能类型",
				width:'15%'
			},{
				field:'funcdescribe',
				title:"功能描述",
				width:'15%',
				editor:{
		        	  type:'textbox',
		        		 options:{		        			 
		        			 required:true 
		        		 }
		          }
			},{
				field:'funccode',
				title:"请求名称",
				width:'20%',
				editor:{
		        	  type:'textbox',
		        		 options:{		        			 
		        			 required:true
		        		 }
		          }
			}]],
			toolbar:[{
				iconCls: 'icon-ok',
				width:'150px',
				text:'确认分组功能',
				handler: function(){
					nodesfuncafter=$('#funclist').datagrid('getChecked');
//					alert(nodesfuncbefore);
					var deletenodes='';
					var newnodes='';
					
					for(var i=0;i<nodesfuncbefore.length;i++){
						var nb=nodesfuncbefore[i];
						var flag=0;
//						alert(nodesafter[nodesafter.length-1].text);
						for(var j=0;j<nodesfuncafter.length;j++){
							var na=nodesfuncafter[j];
							if(na==undefined){
								alert(j);
								return
							}					
							if(na.funcId==nb.funcId){
								flag=1;
								break;
							}
						}
						if(flag==0){//即将删除
							deletenodes=deletenodes+nb.funcId+',';
						}
					}
					if(deletenodes!='')
						deletenodes=deletenodes.substring(0,deletenodes.length-1);
					for(var i=0;i<nodesfuncafter.length;i++){
						var na=nodesfuncafter[i];
						var flag=0;
						for(var j=0;j<nodesfuncbefore.length;j++){
							var nb=nodesfuncbefore[j];
							if(nb.funcId==na.funcId){
								flag=1;
								break;
							}
						}
						if(flag==0){//即将新增
							newnodes=newnodes+na.funcId+',';
						}
					}
					if(newnodes!=''){
						newnodes=newnodes.substring(0,newnodes.length-1);
					}
//					alert(deletenodes);
					if(newnodes!=''||deletenodes!=''){
						$.ajax({
							url:'editfunctogroup',
							type:'POST',
							data:{
								gpId:gpId,
								newnodes:newnodes,
								deletenodes:deletenodes
							},
							success:function(data){
								alert(data.msg);
								$.ajax({
									url:'getugfuncbygpId?ugId='+gpId,
									success:function(data){
										recheckfunclist(data);
									}
								});
							}					
						});
					}
				}
			}],
			fit:true,
//			onDblClickRow:onClickRow,
			striped:true,
			nowrap:true,
			pagination:true,
			rownumbers:true,
			autoRowHeight:false,
			onLoadSuccess:function(){
//				if(gpId==''){
//					return
//				}
				$.ajax({
					url:'getugfuncbygpId?ugId='+gpId,
					success:function(data){
						recheckfunclist(data);
					}
				});
			}
		});
	}	
});